﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Entity
{
    /// <summary>
    /// Liste les valeurs possibles pour le champs "sexe" de la table Utilisateur.
    /// Permet également de servir de DataSource dans les pages.
    /// </summary>
    public class Sexe
    {

        /// <summary>
        /// Sexe masculin.
        /// </summary>
        public const char MASCULIN = 'M';

        /// <summary>
        /// Sexe féminin.
        /// </summary>
        public const char FEMININ = 'F';

        /// <summary>
        /// Retourne une liste de toutes les sexes.
        /// </summary>
        /// <returns></returns>
        public static List<char> getSexes()
        {
            List<char> sexes = new List<char>();
            sexes.Add(MASCULIN);
            sexes.Add(FEMININ);
            return sexes;
        }

        /// <summary>
        /// Retourne une liste de toutes les sexes avec libellé associé.
        /// </summary>
        /// <returns>Une liste de sexes avec libellé associé</returns>
        public static List<SexeDescription> getSexesDescriptions()
        {
            List<SexeDescription> sexes = new List<SexeDescription>();
            sexes.Add(new SexeDescription("Homme", MASCULIN));
            sexes.Add(new SexeDescription("Femme", FEMININ));
            return sexes;
        }

        /// <summary>
        /// Associe un libellé à un sexe.
        /// </summary>
        public class SexeDescription
        {
            public String Libelle { get; set; }
            public char Valeur { get; set; }

            public SexeDescription(string libelle, char valeur)
            {
                this.Libelle = libelle;
                this.Valeur = valeur;
            }
        }
    }
}
